//package org.ccay.excel.exporter.util.impl;
//
//import java.util.Map;
//
//import javax.inject.Inject;
//import javax.inject.Named;
//
//import org.ccay.async.task.ExportTaskVO;
//import org.ccay.async.task.ImportTaskVO;
//import org.ccay.async.task.service.IExportTaskService;
//import org.ccay.async.task.service.IImportTaskService;
//import org.ccay.core.exception.ApplicationException;
//import org.ccay.core.io.FileInfoVO;
//import org.ccay.core.request.IUserPrincipal;
//import org.ccay.core.request.impl.RequestContext;
//import org.ccay.core.util.PathUtil;
//import org.ccay.core.util.StringUtil;
//import org.ccay.download.support.DownloadException;
//import org.ccay.download.support.IDownloadSupport;
//
///**
// * ExcelHaedoc附件下载servlet
// * 
// * @author chaowangbang
// * @since 2015-6-2
// */
//@Named("IDownloadSupport.ExcelHaedoc")
//public class ExcelHaedocDownloadSupport implements IDownloadSupport {
//
//	// 判断附件下载的类型导入或导出
//	private static final String EXCEL_EXPORT = "EXP";
//
//	private static final String EXCEL_IMPORT = "IMP"; 
//
//	@Inject
//	private IImportTaskService importTaskService;
//	
//	@Inject
//	private	IExportTaskService excelExportTaskService;
// 
//	
//	/**
//	 * 获得下载类型
//	 * 
//	 * @author chaowangbang
//	 * @since 2015-6-2
//	 * @return
//	 */
//	public String getDownloadType() {
//		return "ExcelHaedoc";
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see org.ccay.download.support.IDownloadSupport#getFileInfo(java.util.Map)
//	 */
//	public FileInfoVO getFileInfo(Map<String, String> map)
//			throws ApplicationException {
//		FileInfoVO file = new FileInfoVO();
//		selectDownloadMethod(map, file);
//		return file;
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see org.ccay.download.support.IDownloadSupport#validatePrivilege(java.util.Map)
//	 */
//	public boolean validatePrivilege(Map<String, String> map)
//			throws ApplicationException {
//		// 获取当前用户
//		IUserPrincipal user = RequestContext.getCurrent().getUser();
//		// String[] idStr = map.get("excelId");
//		int id = Integer.valueOf(map.get("excelId"));	 
//
//		// 获取任务ID
//		String execFlag = map.get("execFlag"); 
//
//		if (EXCEL_IMPORT.equals(execFlag)) {
//			return true;
//		} else if (EXCEL_EXPORT.equals(execFlag)) {
//			// 根据id查询导出任务
//			ExportTaskVO excelExportTaskVO = excelExportTaskService
//					.findExportTaskById(id);
//			return excelExportTaskVO.getCreatedBy() == user.getUserId();
//		} else {
//			return false;
//		}
//	}
//
//	/**
//	 * 下载附件，根据类型来选择下载方式
//	 * 
//	 * @author chaowangbang
//	 * @since 2012-2-1
//	 * @param map
//	 * @param file
//	 * @throws ApplicationException
//	 */
//	private void selectDownloadMethod(Map<String, String> map, FileInfoVO file)
//			throws ApplicationException {
//
//		int id = Integer.valueOf(map.get("excelId"));
//		// 获取任务ID
//		String execFlag = map.get("execFlag");
//		// 判断是否有错误信息
//		String remark = map.get("remark"); 
//
//		if (EXCEL_IMPORT.equals(execFlag)) {
//			setImportFileInfo(id, remark, file);
//		} else if (EXCEL_EXPORT.equals(execFlag)) {
//			setExportFileInfo(id, file);
//		}
//	}
//
//	/**
//	 * 初始化导出下载的参数
//	 * 
//	 * @author chaowangbang
//	 * @since 2012-2-1
//	 * @param id
//	 * @param file
//	 * @throws ApplicationException
//	 * @throws ApplicationException
//	 */
//	private void setExportFileInfo(int id, FileInfoVO file)
//			throws ApplicationException {
//		ExportTaskVO excelExportTaskVO = excelExportTaskService
//				.findExportTaskById(id);
//		// 设置下载路径
//		String fileName = excelExportTaskVO.getFileName();
//		// 设置下载文件名为数据库存储的文件名，以便下载时用户看到的文件名与查询到的一致
//		String downloadName = excelExportTaskVO.getTmpName();
//		setFileInfoParam(fileName, downloadName, file);
//	}
//
//	/**
//	 * 初始化导入下载的参数
//	 * 
//	 * @author chaowangbang
//	 * @since 2012-2-1
//	 * @param id
//	 * @param remark
//	 * @param file
//	 * @throws ApplicationException
//	 * @throws ApplicationException
//	 */
//	private void setImportFileInfo(int id, String remark, FileInfoVO file)
//			throws ApplicationException {
//		ImportTaskVO vo=new ImportTaskVO();
//		vo.setTaskId(id);
//		ImportTaskVO excelImportTaskVO = importTaskService.findImporttaskByHaedoc(vo);
//		// 设置下载路径
//		String filePath = excelImportTaskVO.getServerFileName();
//		// 设置下载文件名为数据库存储的文件名，以便下载时用户看到的文件名与查询到的一致
//		if(StringUtil.isNullOrEmpty(filePath)){
//			throw new DownloadException("ccay.download.support.00010002");
//		}
//		String displayName = excelImportTaskVO.getFileName();
//		
//		if ("true".equalsIgnoreCase(remark)) {
//			if(excelImportTaskVO.getRemark().endsWith(".txt")){
//				// 获取错误文件下载地址
//				filePath = PathUtil.getPath("excel/import/") + excelImportTaskVO.getRemark();
//				String downloadName = excelImportTaskVO.getTaskNo() + ".txt";
//				setFileInfoParam(filePath, downloadName, file);
//			}else{
//				file.setFilePath(excelImportTaskVO.getRemark());
//				// 将下载文件名赋予file
//				file.setDisplayName(displayName);
//			}
//		}else {
//			// 将下载路径赋予file
//			file.setFilePath(filePath);
//			// 将下载文件名赋予file
//			file.setDisplayName(displayName);
//		}
//	}
//
//	/**
//	 * 设置下载文件名以及下载路径
//	 * 
//	 * @author chaowangbang
//	 * @since 2012-2-1
//	 * @param fileName
//	 * @param downloadName
//	 * @param file
//	 * @throws ApplicationException
//	 */
//	private void setFileInfoParam(String fileName, String downloadName,
//			FileInfoVO file) throws ApplicationException {
//		String suffix = null;
//		
//		int idx = fileName.lastIndexOf(".");
//		if (idx > 0) {
//			suffix = fileName.substring(idx);
//		}
//
//		// 当文件名后有后缀名时，去掉以免重复。
//		if (downloadName.lastIndexOf(".") > 0) {
//			downloadName = downloadName.substring(0, downloadName
//					.lastIndexOf("."));
//		}
//		// 将下载路径赋予file
//		file.setFilePath(fileName);
//		// 将下载文件名赋予file
//		file.setDisplayName(downloadName + suffix);
//	}
//}